The present invention relates generally to efficiently providing up-to-date data for use by software applications.
Many applications, such as those which execute on the World Wide Web or provide services, utilize data that is stored on remote sources, e.g., databases or data stores. When an application requires a piece of data stored on a remote source, the application may obtain the piece of data, and then cache the piece data locally for a fixed amount of time. The piece of data may remain cached until the fixed amount of time elapses, at which point the piece of data is generally discarded from the cache.
In general, if a piece of data needed by an application is not available in a cache, the application obtains the piece of data from a remote source in a substantially synchronous manner. That is, when an application requires a piece of data that is not present in a cache, the application requests the piece of data from a remote source, and subsequently retrieves or otherwise receives the piece of data from the remote source. The process of obtaining data from a remote source involves a significant amount of latency and communications overhead, as a connection to the remote source must be opened, and subsequently closed, to enable the piece of data to be obtained. While the amount of time associated with retrieving a single piece of data or a service from the remote source is often on the order of approximately one millisecond, the amount of communications overhead required to open and to close a connection to the remote source is often significantly higher, e.g., on the order of approximately three milliseconds. Hence, there may be approximately four milliseconds associated with retrieving a single piece or data.
As a typical application may require access to multiple pieces of data, e.g., hundreds of pieces of data, the amount of communications overhead and latency associated with obtaining the multiple pieces of data is not insignificant, and may adversely affect the overall performance of the computing system on which the application executes. Therefore, what is desired is a method and an apparatus that improves the speed at which pieces of data that are necessary for the execution of an application may be obtained.